package com.show.business.common.utils.uuid;

import java.util.concurrent.ThreadLocalRandom;

/**
 * ID生成器工具类
 *
 * @author show
 */
public class IdUtils
{
    private static final char[] NUMBERS = "0123456789".toCharArray();
    /**
     * 获取随机UUID
     *
     * @return 随机UUID
     */
    public static String randomUUID()
    {
        return UUID.randomUUID().toString();
    }

    /**
     * 简化的UUID，去掉了横线
     *
     * @return 简化的UUID，去掉了横线
     */
    public static String simpleUUID()
    {
        return UUID.randomUUID().toString(true);
    }

    /**
     * 获取随机UUID，使用性能更好的ThreadLocalRandom生成UUID
     *
     * @return 随机UUID
     */
    public static String fastUUID()
    {
        return UUID.fastUUID().toString();
    }

    /**
     * 简化的UUID，去掉了横线，使用性能更好的ThreadLocalRandom生成UUID
     *
     * @return 简化的UUID，去掉了横线
     */
    public static String fastSimpleUUID()
    {
        return UUID.fastUUID().toString(true);
    }
    /**
     * 生成随机数字字符串（指定位数）
     * @param length 生成数字的位数
     * @return 随机数字字符串
     */
    public static String randomNumeric(int length) {
        if (length <= 0) {
            return "";
        }

        // 使用ThreadLocalRandom提高并发性能
        ThreadLocalRandom random = ThreadLocalRandom.current();
        char[] buf = new char[length];

        for (int i = 0; i < length; i++) {
            buf[i] = NUMBERS[random.nextInt(NUMBERS.length)];
        }
        return new String(buf);
    }
}
